import { AxiosRequestConfig } from 'axios'

export enum REQMethods {
    GET = 'get',
    POST = 'post',
    PUT = 'put',
    DELETE = 'delete',
    HEAD = 'head'
}

export enum REQParamsType {
    /**
     * key value 形式：用于登录，需要改请求头
     * 'Content-Type': 'application/x-www-form-urlencoded'
     */
    KEY_VALUE = 'keyValue',
    /**
     * 默认的 Post/Put 请求 json 格式，不需要改请求头
     */
    JSON = 'json',
    /**
     * RESTful 风格，简单请求是参数以 query 形式拼接在请求路径后面
     * 如：/res/iam-post/entity/{id}
     */
    QUERY = 'query',
    /**
     * 简单请求的默认形式
     */
    URL = 'url'
}

export interface RequestConfig {
    /**
     * api 调用名
     */
    name: string
    /**
     * 对应后台的接口 api
     */
    api: string
    /**
     * 请求方法
     */
    method: REQMethods
    /**
     * 当前请求需要携带的请求头
     */
    headers?: {
        [key: string]: any
    }
    /**
     * 参数发送形式
     */
    paramType?: REQParamsType
    /**
     * 开发模式前缀：取决于开发模式下已经添加的代理前缀
     * 见 vite.config.ts
     */
    devPrefix?: string
    /**
     * 请求时，axios 的额外配置
     * 可用配置请参考：https://www.kancloud.cn/yunye/axios/234845
     */
    axiosRequestConfig?: AxiosRequestConfig
}
